package com.lk.web.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lk.web.entity.SysRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色表 Mapper 接口
 *
 * @author Aspirin
 * @since 2020-06-21
 */
public interface SysRoleMapper extends BaseMapper<SysRole> {

  /**
   * 只要将非 limit 的sql 语句写在 对应的 id="selectPage"里面（SysRoleMapper.xml），不需要自动去分页，而mybaits-plus会自动实现分页
   * 但是，它实现分页，你需要第一个参数会传入Page，而其他参数你需要使用@Param(xx)要取别名 最终查询到的数据会被封装到IPage实现里面
   *
   * @param page 页对象
   * @param sysRole 实体对象
   * @return IPage
   */
  Page<SysRole> customSelectPage(Page<SysRole> page, @Param("p") SysRole sysRole);

  /**
   * 通过角色id删除角色权限表中的所有记录
   *
   * @param roleId 角色id
   * @return boolean
   */
  boolean deleteRolePermissionByRoleId(@Param("roleId") Long roleId);

  /**
   * 保存角色 与权限关系表数据
   *
   * @param roleId 角色id
   * @param perIds 角色所拥有的权限
   * @return boolean
   */
  boolean saveRolePermission(@Param("roleId") Long roleId, @Param("perIds") List<Long> perIds);

  /**
   * 通过用户id查询所拥有的角色
   *
   * @param userId 用户id
   * @return 查询到角色信息集合
   */
  List<SysRole> findByUserId(@Param("userId") Long userId);
}
